package org.dromara.admin.domain.vo;

import java.util.Date;

import org.dromara.admin.domain.Company;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.admin.enums.GeneralEnum;
import org.dromara.admin.enums.MemberEnum;
import org.dromara.admin.enums.SubjectTypeEnum;

import java.io.Serial;
import java.io.Serializable;


/**
 * 主体信息视图对象 bi_company
 *
 * @author Lion Li
 * @date 2025-10-10
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = Company.class)
public class CompanyVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主体唯一ID
     */
    @ExcelProperty(value = "主体唯一ID")
    private Long id;

    /**
     * 公司编号（如10000021，唯一）
     */
    @ExcelProperty(value = "公司编号")
    private String companyCode;

    /**
     * 主体类型：个人(PERSONAL),个体户(SELF_EMPLOYED),企业(ENTERPRISE)
     */
    @ExcelProperty(value = "主体类型：个人(PERSONAL),个体户(SELF_EMPLOYED),企业(ENTERPRISE)", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "subject_type")
    private SubjectTypeEnum subjectType;

    /**
     * 主体全称
     */
    @ExcelProperty(value = "主体全称")
    private String name;

    /**
     * 主体简称
     */
    @ExcelProperty(value = "主体简称")
    private String shortName;

    /**
     * 公司名称拼音首字母
     */
    @ExcelProperty(value = "公司名称拼音首字母")
    private String namePy;

    /**
     * 签名
     */
    @ExcelProperty(value = "签名")
    private String signature;

    /**
     * 联系人1（必填）
     */
    @ExcelProperty(value = "联系人1")
    private String contactPerson1;

    /**
     * 联系方式1（必填）
     */
    @ExcelProperty(value = "联系方式1")
    private String contact1;

    /**
     * 联系人2（可选）
     */
    @ExcelProperty(value = "联系人2")
    private String contactPerson2;

    /**
     * 联系方式2（可选）
     */
    @ExcelProperty(value = "联系方式2")
    private String contact2;

    /**
     * 地址-省
     */
    @ExcelProperty(value = "地址-省")
    private String province;

    /**
     * 地址-市
     */
    @ExcelProperty(value = "地址-市")
    private String city;

    /**
     * 地址-区/县
     */
    @ExcelProperty(value = "地址-区/县")
    private String district;

    /**
     * 详细地址
     */
    @ExcelProperty(value = "详细地址")
    private String detailAddress;

    /**
     * 会员模式：免费会员(FREE)、付费会员(PAID)
     */
    @ExcelProperty(value = "会员模式：免费会员(FREE)、付费会员(PAID)", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "member_enum")
    private MemberEnum memberMode;

    /**
     * 会员状态：有效会员(VALID)、无效会员(INVALID)
     */
    @ExcelProperty(value = "会员状态：有效会员(VALID)、无效会员(INVALID)", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "member_enum")
    private MemberEnum memberStatus;

    /**
     * 会员到期时间（如2026-01-01）
     */
    @ExcelProperty(value = "会员到期时间")
    private Date memberExpireTime;

    /**
     * 主体状态：Y-正常，N-冻结
     */
    @ExcelProperty(value = "主体状态：Y-正常，N-冻结", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "general_enum")
    private GeneralEnum subjectStatus;


}
